A typical standard networking system implemented single-function, fixed functionality per network element. Even, the first generation of virtualized systems offers per-customer functionality, but the functionality is still fixed per network element. These limitations lead to several drawbacks. Customers may judge service providers based on service availability, bandwidth, and quality of service. Each individual network element must take the time and resources to make a decision on how to process an incoming data packet. Service availability, bandwidth, and quality of service may be adversely affected by the more combined time and combined resources it takes to process packet throughout the entire network.
FIG. 1 illustrates a typical network system. The network system 100 includes an outside network such as Internet 101, a plurality of network servers 103 and individual network elements, such as a firewall 104, a load balancer 105, a traffic manager 106, and a router 107. The network elements 104-107 receive data packets from another network system over the Internet 101. The data may be received from a client such as a personal computer. Alternatively, the data may be received from another network environment, such as corporate intranet. The data packets may be packaged in TCP/IP protocol. The network elements 104-107 receive the data; the network elements 104-107 identify the source and the destination of the servers being targeted. The network elements 104-107 process the data packets and distribute the data flow to an appropriate server within the servers 103. In return, one or more servers within the servers 103 process the data packets and respond accordingly. The responses are transmitted from the corresponding servers to the network elements 104-107 which will resolve the destination of the client and transmit the data packets back to the appropriate client over the Internet 101. Multiple servers 103 may share a physical port or IP address; however, a corresponding logical ID identified by the network elements 104-107 may identify each server of the servers 103. It is the network equipments 102 responsibility to resolve the processing and routing of these data packets.
Typically, network systems implement one of two different types of packet processing technique: packet-by-packet processing or fast-path processing.
FIG. 2 illustrates an exemplary flow chart for a network system implementing packet-by-packet processing. In packet-by-packet processing, each packet is processed identically through the main processing algorithm and associated packet-processing components 202.
FIG. 3 illustrates an exemplary flow chart for a network system implementing an architecture and an algorithm for processing a packet in a fast path architecture. Fast-path processing takes the standard packet-by-packet flow and modifies it to add a fast path. 304. In the fast-path processing 304 technique, when a packet is ready to be processed, a check 306 is first done to determine whether the packet needs to be processed on the fast path or on the slow path.
The slow-path processing 302 is similar to the processing performed in the packet-by-packet technique. The slow-path processing 302 is the “full” processing that the packet would receive normally. The slow-path processing 302 examines the packet for various special cases that may exist in the processing algorithm. This examination process takes time and slows down the processing.
In contrast, the fast-path processing 304 is streamlined to eliminate all decision making. The fast-path processing 304 focuses primarily on performing the basic processing algorithm without consideration of any options. In doing so, the logic in the fast-path processing 304 typically runs faster than the logic in the slow-path processing 302. If many packets can be sent through the fast path logic, the overall throughput of the communications equipment improves.
Some types of fast-path processing algorithms employ a stateless decision as to whether to use the slow path processing 302 or fast path processing 304. Simply by examining the packet itself, the decision logic in the check 306 can determine whether the packet is defaulted to slow-path processing.
A good example of this is a standard Internet Protocol router that looks for IP options in the IP header. If no options are found, the packet is sent to the fast path 304 for processing. Packets that contain IP options are sent to the slow path 302 for more extensive examination and processing. However, typically, a network system implementing an architecture and an algorithm for processing a packet in a fast path architecture does not typically optimize the processing of the packet. In network systems simulating pieces of real network equipment, increasing packet processing performance is beneficial.
There are many optimizations that can be performed. For example, Data patterns in a given network are often very stable. While connectionless, packet networks process data in a packet-by-packet fashion. There is often great commonality in processing various packets. In particular, packets often belong to higher-level sessions and flows from these sessions often travel the same paths and receive the same processing in a given node.